package main

import (
	"fmt"
	"net"
)

func main() {
	// 使用Go语言写一个server，就是这么简单，这是来自于标准库的扩展能力
	listen, err :=net.Listen("tcp","127.0.0.1:8888")
	if err !=nil{
		print(err)
		return
	}
	for {
		conn,err := listen.Accept()
		if err !=nil{
			fmt.Println("建立连接失败",err)
			continue
		}
		// 一直等待接听
		go process(conn)
	}
}
func process(conn net.Conn)  {
		// 拿到这个对象就是读写文件了，把它看成文件
		defer conn.Close() // resource leak


		bs := make([]byte,1024)
		conn.Write([]byte("I have receive your request"))
		for {

			// tcp协议并没有结束标志，如果连接没有断开，会一直阻塞读
			n, err := conn.Read(bs)
			if err!=nil{
				fmt.Println(err)
				break
			}
			if n <= 0{
				break
			}
			fmt.Println(string(bs))
		}
		//writer := bufio.NewWriter(conn)
		//writer.Write([]byte("I have receive your request"))
		//writer.Flush()
		//conn.Close()

		fmt.Printf("the send data len\n")
		conn.Close()
}
